/*
给你一个包含 n 个整数的数组 nums，判断 nums 中是否存在三个元素 a，b，c ，使得 a + b + c = 0 ？请你找出所有和为 0 且不重复的三元组。

注意：答案中不可以包含重复的三元组。

示例 1：
输入：nums = [-1,0,1,2,-1,-4]
输出：[[-1,-1,2],[-1,0,1]]

示例 2：
输入：nums = []
输出：[]

示例 3：
输入：nums = [0]
输出：[]
 */


function getUnique(array){
	let obj = {}
     return array.filter((item, index) => {
	// 防止key重复
	let newItem = item + JSON.stringify(item)
	return obj.hasOwnProperty(newItem) ? false : obj[newItem] = true
	})
}

Array.prototype.remove = function (val) {
  let arr = this
  arr = this.filter((item, index) => index !== val);
  return arr;
};
/**
 * @param {number[]} nums
 * @return {number[][]}
 */
const threeSum = function (nums) {
  const result = [];
  for (let index1 = 0; index1 < nums.length; index1++) {
    const element1 = nums[index1];
    const arr1 = nums.remove(index1);
    for (let index2 = 0; index2 < arr1.length; index2++) {
      const element2 = arr1[index2];
      const arr2 = arr1.remove(index2);
      for (let index3 = 0; index3 < arr2.length; index3++) {
        const element3 = arr2[index3];
        const res = element1 + element2 + element3;
        if (res === 0) {
          result.push([element1, element2, element3].sort());
        }
      }
    }
  }
  return getUnique(result);
};

const res = threeSum([-1,0,1,2,-1,-4]);
console.log(res);
